# 方法一
'''
啊这好难，不太会呀，直接参考大佬题解👇
'''

#试题 G: 全排列的价值
import math  # 导入 math 模块，用来计算阶乘。
n=int(input())
print(sum(range(n)) * math.factorial(n) // 2 % 998244353)  # 计算全排列的价值并输出。
# sum(range(n)) 计算了1到n的和。
# math.factorial(n) 计算了n的阶乘。
# //2 是对阶乘结果的除以2取整。
# %998244353 是对整个表达式的结果取模。

# 方法三
'''
这题想不出来主打一个爆搜，但是你把内容写下来，你会发现，借用一个老哥的解释
'''
# 等差数列公式，Sn = [n (a1 + an)] / 2
# 第一个正排序为 n（0+ n-1）/2, 逆排序为0 ， 所以，一对排列式的价值和为n（0+ n-1）/2,一共有 n!/2 队
# 乘起来是  [(n!) * (n(n-1))] / 4
a= int(input())
s= a*(a-1)/4
for i in range(1,a+1):
    s*=i
    s%=998244353
print(int(s))





n = int(input())
s = n * (n-1) / 4
# 计算s 再乘上n的阶乘
for i in range(1, n+1):
    s *= i
    s %= 998244353
print(int(s))
